﻿
@{
    ViewData["Title"] = "数据表管理";
    Layout = "~/Views/Shared/_Index.cshtml";
}

<div class="container-div">
    <div class="row">
        <div class="col-sm-12 search-collapse">
            <form id="searchForm">
                <div class="select-list">
                    <ul>

                        <li>
                            表名称：<input type="text" id="tableName" name="tableName">
                        </li>
                        <li>
                            <a class="btn btn-primary btn-rounded btn-sm" id="searchButton"><i class="fa fa-search"></i>&nbsp;搜索</a>
                            <a class="btn btn-warning btn-rounded btn-sm" id="resetButton"><i class="fa fa-refresh"></i>&nbsp;重置</a>
                        </li>
                    </ul>
                </div>
            </form>
        </div>
        <div class="btn-group-sm" role="group" id="toolbar">
            <a class="btn btn-info" onclick="syncAll(this);" data-id="0" data-role="system:codegen:syncall">
                <i class="fa fa-refresh"></i> 全量同步
            </a>
            <a class="btn btn-primary" onclick="importTable(this);" data-id="0" data-role="system:codegen:import">
                <i class="fa fa-refresh"></i> 导入单表
            </a>
            <a class="btn btn-danger multiple disabled" onclick="del(this);" data-id="0" data-role="system:codegen:delete">
                <i class="fa fa-remove"></i> 删除
            </a>

        </div>
        <div class="col-sm-12 select-table table-striped">
            <table id="dataTable"></table>
        </div>

    </div>
</div>
@section scripts
{
    <script>
        var $table;
        $(function () {
            loadGrid();
        });

        function loadGrid() {
            let options = {
                url: '/admin/CodeGen/getdata',
                pageNumber: 1,                      // 初始化加载第一页，默认第一页,并记录
                pageSize: 10,                       // 每页的记录行数（*）
                pageList: "10, 25, 50, 100",        // 可供选择的每页的行数（*）
                queryParams: function (params) {
                    let p = {
                        pageNumber: params.pageNumber,
                        pageSize: params.pageSize,
                        tableName: $('#tableName').val()
                    }
                    return p;
                },
                columns: [
                    { field: 'ck', checkbox: true },
                    {
                        field: 'table_name', title: '表名称', align: 'left'
                    },
                    {
                        field: 'entity_name', title: '实体类名称', align: 'left'
                    },
                    {
                        field: 'table_type', title: '类型', align: 'left', formatter: function (v) {
                            if (v === 0) {
                                return '表';
                            }
                            if (v === 1) {
                                return '视图';
                            }
                            return '存储过程';
                        }
                    },
                    {
                        field: 'remark', title: '表描述', align: 'left'
                    },
                    {
                        field: 'sync_time', title: '首次同步', align: 'left'
                    },
                    {
                        field: 'update_time', title: '最近同步', align: 'left'
                    },
                    {
                        field: 'id', title: '操作', align: 'left', formatter: renderOpts
                    }
                ]

            };
            $table = $('#dataTable').easyTable(options);
        }

        function renderOpts(v, r) {
           
            var buttons = [
                {
                    roleTag: 'system:codegen:gentable',
                    button: '<a class="btn btn-info btn-xs " href="javascript:void(0)" data-id=' + r.table_name + ' onclick="genTable(this);"><i class="fa fa-search"></i>预览</a>'
                },
                {
                    roleTag: 'system:codegen:column',
                    button: '<a class="btn btn-success btn-xs " href="javascript:void(0)" data-id=' + r.table_name +' onclick="preview(this);"><i class="fa fa-list-ul"></i>字段</a>'
                },
                {
                    roleTag: 'system:codegen:synctable',
                    button: '<a class="btn btn-warning btn-xs " href="javascript:void(0)" data-id=' + r.table_name + ' onclick="syncTable(this);"><i class="fa fa-refresh"></i>同步</a>'
                }
            ]
            return jutils.buttonPermission(buttons);
        }




        function preview(obj) {

            var tname = $(obj).data('id');

            jutils.openTab('admin_codegen_columnview',"表字段信息", '/admin/codegen/ColumnView', { tableName: tname });
        }

        function genTable(obj) {

            var tname = $(obj).data('id');

            jutils.dialogTop('代码预览【生成代码仅为辅助开发，请根据实际调整代码】', '/admin/codegen/gencode', { tableName: tname });

        }

        function syncTable(obj) {
            var tname = $(obj).data('id');
            let msg = '确认同步表【' + tname + '】的表结构吗？';
            jutils.confirm(msg, function () {
                jutils.ajaxGet('/admin/CodeGen/syncTable',
                    { tableName: tname},
                    function () {
                        $table.easyTable('search');
                    });
            })
        }


        function del() {
            var rows = $table.easyTable('selected');
            if (rows.length === 0) {
                jutils.warn('请选择数据行');
                return;
            }
            var ids = [];
            for (var i = 0; i < rows.length; i++) {

                ids.push(rows[i].id);

            }
            jutils.confirm('确认删除数据表信息吗？',
                function () {
                    jutils.ajaxGet('/admin/CodeGen/RemoveAll',
                        { ids: ids.join() },
                        function () {
                            $table.easyTable('search');
                        });
                });
        }

        function syncAll() {
            jutils.confirm('确认全量同步表信息吗',
                function () {
                    jutils.ajaxGet('/admin/CodeGen/SyncAll', null,
                        function () {
                            $table.easyTable('search');
                        });
                });
        }

        //导入单表
        function importTable(obj) {
            //prompt层

            layer.prompt({ title: '填写需要导入的数据表名称', formType: 2 }, function (txt, index) {
                if (jutils.empty(txt)) {
                    jutils.warn("请填写数据表名称");
                    return;
                }

                jutils.ajaxGet('/admin/CodeGen/syncTable',
                    { tableName: txt },
                    function () {
                        layer.close(index);
                        $table.easyTable('search');
                    });
            });
        }

        function query() {
            $table.easyTable('search');
        }
    </script>
}






